package dominio;

public class Pacman implements IMovible {
	private Nodo nodoActual;
	private Boolean muerto;
	private Integer puntaje;
	
	private Sentido direccionActual;

	public Pacman() {
		nodoActual = Juego.getInstance().getLaberinto().getNodoInicialPacman();
		muerto = false;
		puntaje = new Integer(0);
		direccionActual = Sentido.DERECHA;
	}
	
	public void mover(Sentido sentido) {
		if (!tratarDeMover(sentido)) {
			tratarDeMover(this.direccionActual);
		}
	}
	
	private boolean tratarDeMover(Sentido sentido) {
		if (nodoActual.getVecino(sentido) != null) {
			nodoActual = nodoActual.getVecino(sentido);
			direccionActual = sentido;
			if (nodoActual.getContiene() != null) {
				nodoActual.getContiene().ejecutarEfectoAlSerComido();
				nodoActual.setContiene(null);
			}
			return true;
		}
		return false;
	}

	public Boolean getMuerto() {
		return muerto;
	}
	public void setMuerto(Boolean muerto) {
		this.muerto = muerto;
	}

	public Posicion getPosicion() {
		return nodoActual.getPosicion();
	}

	public Integer getPuntaje() {
		return puntaje;
	}
	public void setPuntaje(Integer puntaje) {
		this.puntaje = puntaje;
	}

	@Override
	public Sentido getSentidoMovimiento() {
		return direccionActual;
	}
	@Override
	public void setSentidoMovimiento(Sentido sentido) {
		direccionActual = sentido;		
	}

	@Override
	public Nodo getNodoActual() {
		return this.nodoActual;
	}

	@Override
	public void setNodoActual(Nodo nuevoNodoActual) {
		this.nodoActual = nuevoNodoActual;		
	}
}
